package com.example.server.security;


import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * @author admin
 */
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface PreAuthorize {

    /**
     * 该注解可以修饰controller方法，则表示访问该方法之前需要先按照type
     * 中指定的方式进行授权的验证
     *
     * type 授权的方式
     * hasAnyRole 请求允许的角色和用户拥有的角色存在交集，就可以通过授权
     * hasAllRoles 用户必须拥有该请求的角色范围中所有的角色才能够访问当前的资源
     *
     * roles 手动配置每个请求需要的角色范围
     */

    String type() default "hasAnyRole";

    String[] roles();
}
